////C++提供的11种定义对象的方法
//#include <iostream>
//#include <cstring>
//
//using namespace std;
//
//class Human {
//public:
//    Human(int age = 0, const char *name = "匿名") {
//        cout << "Human类的构造函数被调用" << endl;
//        this->m_age = age;
//        strcpy(this->m_name, name);
//    }
//
//    void getInfo() {
//        cout << "姓名:" << m_name << ",年龄" << m_age << endl;
//    }
//
//private:
//    int m_age;
//    char m_name[256];
//};
//
//int main(void) {
//    Human(32, "马超").getInfo();//定义匿名Human类对象，利用匿名Human类对象.Human(32,"马超");
//
//    Human h(22, "张三");
//    cout << "h对象定义完毕" << endl;
//    h.getInfo();
//
//    Human h2;
//    h2.getInfo();
//    Human h3[3];
//    for (int i = 0; i < 3; i++) {//定义3个Human类的对象，分别利用这3个Human类对象.Human()
//        h3[i].getInfo();
//    }
//    Human h4[3] = {Human(22, "张非"), Human(10, "赵云"), Human(25, "关羽")};
//    for (int i = 0; i < 3; i++) {
//        h4[i].getInfo();
//    }
//    Human h5[] = {Human(22, "张飞"), Human(20, "赵云"), Human(25, "关于"), Human(45, "黄忠")};
//    for (int i = 0; i < sizeof(h5) / sizeof(h5[0]); i++) {
//        h5[i].getInfo();
//    }
//    Human *ph = new Human;//定义Human类堆对象，利用Human堆对象.Human()
//    (*ph).getInfo();
//    delete ph;
//    ph = NULL;
//    Human *ph2 = new Human();//定义Human类堆对象，利用Human堆对象.Human()
//    (*ph2).getInfo();
//    delete ph2;
//    ph2 = NULL;
//    Human *ph3 = new Human(30, "张飞");
//    (*ph3).getInfo();
//    delete ph3;
//    ph3 = NULL;
//
//    Human *ph4 = new Human[3];//定义3个Human类堆对象，分别利用这3个Human类堆对象.Human()
//    for (int i = 0; i < 3; i++) {
//        ph4[i].getInfo();
//    }
//    delete[] ph4;//数组方式delete
//    ph4 = NULL;
//    Human *ph5 = new Human[3]{Human(20, "赵云"), Human(15, "子龙"), Human(16, "张飞")};// -std=c++11
//    for (int i = 0; i < 3; i++) {
//        ph5[i].getInfo();
//    }
//    delete[] ph5;
//    ph5 = NULL;
//
//    return 0;
//}